
/**********************************************************************************
*
*	文件名称：node.h
* 	文件作用：链表增和销毁等函数的宏定义声明的头文件
* 	文件作者：WSY
* 	修改日期：2023.12.25
* 	修改日期：2023.12.25
*  	注意事项：
*
*	版权声明：CopyRight (c)  @cecelmx.126.com  All Right Reserved
* ********************************************************************************/

#ifndef _NODE_H
#define _NODE_H

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>


/*************定义图片数据域**************/
typedef struct DataType
{
    char Name[320];    /* 定义一个字符数组来装图片完整路径 */
    char Type ;       /*定义一个字符来装文件类型 b 是 bmp类型 ，j 是 jpg 类型*/
    int Num;          /* 定义一个Num来装文件的编号， 按照文件编号来做有序插入 */
  
    
}DataType;

/*************定义文本数据域**************/
typedef struct UserDataType
{
    char Name[320];     /* 定义一个字符数组来装文件完整路径 */
    char Id[20] ;       /* 定义字符数组存储11位数id和偏移标识符 */
    char Pw[7] ;        /* 定义字符数组存储6位数密码 */
    char Money[7] ;        /* 定义字符数组存储用户余额 */
    char creatDate[11] ;        /* 定义字符数组存储用户账号创建时间 */
  
    
}UserDataType;


// 定义图片节点类型
typedef struct Node
{
    // 存放数据域对象
    DataType Data;

    // 指针域对象
    struct Node * Prev ; // 前驱指针
    struct Node * Next ; // 后继指针
}Node , *P_Node ;

// 定义文件节点类型
typedef struct UserNode
{
    // 存放数据域对象
    UserDataType Data;

    // 指针域对象
    struct UserNode * Prev ; // 前驱指针
    struct UserNode * Next ; // 后继指针
}UserNode , *P_UserNode ;


/*************************************图片链表函数声明*********************************************/

/*获取新数据函数*/
DataType GetNewData( char * Name , char Type );

/*获取新节点函数*/
P_Node NewNode( DataType * NewData );

/*插入函数*/
void Add2Head(P_Node head , P_Node New );

/*显示链表函数*/
void DisplayList( P_Node head );

/*依次链接三节点*/
void Add2List ( P_Node Prev ,  P_Node New , P_Node Next );

/*有序插入新节点*/
void Add2ListOrder( P_Node head , P_Node New );

/*销毁传入头节点*/
void DestroyNode( P_Node head);

/*************************************文件链表函数声明*********************************************/
/*获取新数据函数*/
UserDataType GetNewUserData(char *Name);

/*获取新节点函数*/
P_UserNode NewUserNode(UserDataType *NewUserData);

/*直接头插函数*/
void Add2UserHead(P_UserNode head, P_UserNode New);

/*有序插入新节点*/
void DisplayUserList(P_UserNode head);

/*销毁传入头节点*/
void DestroyUserNode(P_UserNode head);

#endif